﻿using System;
// 泛化方法指在方法的标识符内声明类参数。
// 使用泛化方法，许多基本数学函数可以用一个通用的方法实现。
namespace _065_泛化方法
{
    class Program
    {
        // 交换两个任意类型值的泛化方法：
        static void Swap<T> (ref T a, ref T b)
        {
            T temp = a;
            a = b;
            b = temp;
        }
        static void Main(string[] args)
        {
            int x = 5;
            int y = 10;
            Swap(ref x, ref y);//Swap<int>(ref x, ref y);
            // 通常不需要提供参数的类型给泛化方法，因为编译器可以在后台判断出类型。
            // 如果有歧义，可以用下面的方法调用泛化方法：
            //Swap<int>(ref x, ref y);
            // 在泛型中，只有新引入类型参数的方法才被归为泛化方法（用尖括号标出）。
            // 唯有方法和类可以引入类型参数
            // 属性、索引器、事件、字段、构造方法、运算符等都不能声明类型参数，虽然它们可以参与使用所在的类中已经声明的类型参数。
        }
    }
}
